package leetcode;

import java.util.Stack;

public class p20括号匹配 {
    public boolean isValid(String s) {
        //字符串转换为字符，存储在字符数组中
        char[] chars=s.toCharArray();
        Stack<Character> stack=new Stack<>();

        for (char ch:chars) {
            if(ch=='(' || ch=='[' || ch=='{') {
                //压栈
                stack.push(ch);
                //包装类的自动装箱！！！！
                //stack.push(Character.valueOf(ch))
            }else if(ch==')') {
                if(stack.isEmpty()) {
                    return false;
                }

                ch=stack.pop();
                //包装类的自动拆箱
                //ch=stack.pop().charValue();
                if(ch!='(') {
                    //和当前栈顶元素不匹配
                    return false;
                }
            }else if(ch==']') {
                if(stack.isEmpty()) {
                    return false;
                }

                ch=stack.pop();
                //包装类的自动拆箱
                //ch=stack.pop().charValue();
                if(ch!='[') {
                    //和当前栈顶元素不匹配
                    return false;
                }
            }else if(ch=='}') {
                if(stack.isEmpty()) {
                    return false;
                }

                ch=stack.pop();
                //包装类的自动拆箱
                //ch=stack.pop().charValue();
                if(ch!='{') {
                    //和当前栈顶元素不匹配
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}
